home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / dvi2ps / dvi-to-ps / font.h < prev    next >
C/C++ Source or Header  |  1990-10-01  |  4KB  |  107 lines

  1. /* modified by Peter Damron 1987 University of Washington */
  2. /*---------------------------------------------------------------------*/
  3. /* $Header: font.h,v 2.0 88/06/07 15:02:12 peterd Rel2 $ */
  4. /*---------------------------------------------------------------------*/
  5. /* constants */
  6.  
  7. #define  MAXFONTCHARS        256
  8. #define  PXLID            1001
  9.  
  10. #ifdef NOTDEF
  11.  
  12. #define  RESOLUTION        300
  13. #define  hconvRESOLUTION    300
  14. #define  vconvRESOLUTION    300
  15.  
  16. #define  NONEXISTANT        -1    /* offset for PXL files not found */
  17. #define  NO_FILE        (FILE *)-1
  18.  
  19. #endif NOTDEF
  20.  
  21. /*---------------------------------------------------------------------*/
  22. /* data structures */
  23. /**********************************************************************/
  24. /***********************  Font Data Structures  ***********************/
  25. /**********************************************************************/
  26.  
  27. typedef struct char_entry *CharEntryType;
  28.  
  29. struct char_entry {            /* character entry */
  30. #ifdef USEPXL
  31.     unsigned short width;    /* char width in pixels */
  32.     unsigned short height;    /* char height in pixels */
  33.     short xOffset;        /* char x offset in pixels */
  34.     short yOffset;        /* char y offset in pixels */
  35. #endif
  36.     struct {
  37.     int isloaded;        /* has this char been down-loaded */
  38.     union {
  39.        long fileOffset;    /* file offset of char for fseek() */
  40.        long *pixptr;    /* pointer to char bitmap */
  41.     } address;
  42.     } where;
  43.     int tfmw;            /* TFM char width */
  44. };
  45.  
  46. typedef struct font_entry *FontEntryType;
  47.  
  48. struct font_entry {    /* font entry */
  49.    int dvi_fnum;    /* font number - from dvi file */
  50.    int dvi_check;    /* checksum - never checked */
  51.    int dvi_s;        /* font space size */
  52.    int dvi_d;        /* font design size */
  53.    int dvi_alen;    /* area (directory) name length for font name */
  54.    int dvi_nlen;    /* font style name length */
  55.             /* dvi_alen + dvi_nlen == length of dvi_name (name) */
  56.    char dvi_name[STRSIZE];    /* FNT_DEF command parameters (??) (font name?) */
  57.    int font_space;    /* computed from FNT_DEF s parameter */
  58.    int font_mag;    /* computed from FNT_DEF s and d parameters */
  59.    char psname[STRSIZE]; /* PostScript name of the font */
  60.    char name[STRSIZE];    /* full name of font file (full path) */
  61.    FILE *font_file_id;  /* file identifier (NO_FILE if none) */
  62.    struct open_font_list *open_font_ptr;    /* entry in open font list */
  63. #ifdef USEPXL
  64.    int magnification;    /* magnification read from PXL file */
  65.    int designsize;    /* design size read from PXL file */
  66. #endif
  67.    struct char_entry ch[MAXFONTCHARS];    /* character information */
  68.    struct font_entry *next;        /* next font entry in list */
  69.    int ncdl;        /* # of different chars actually downloaded */
  70. #ifdef STATS
  71.    int nbpxl;        /* # of bytes of font data downloaded*/
  72.    int ncts;        /* # characters typeset for this font */
  73.    int nopen;        /* # file opens requested for this font */
  74.    int nclose;        /* # file closes performed for this font */
  75. #endif
  76. };
  77.  
  78. typedef struct open_font_list *OpenFontType;
  79.  
  80. struct open_font_list
  81. {
  82.     FILE *pixel_file_id;        /* file identifier */
  83.     struct font_entry *font_entry_ptr;    /* font entry (fast lookup) */
  84.     int use_count;            /* count of "opens" */
  85. };
  86.  
  87.  
  88. /*---------------------------------------------------------------------*/
  89. /**********************************************************************/
  90. /*************************  Global Variables  *************************/
  91. /**********************************************************************/
  92.  
  93. /* font stuff */
  94. extern int  G_nopen;            /* number of open font files (pxl/gf) */
  95. extern FILE *G_fontfp;            /* font file pointer */
  96. extern char *G_fontpath[PATHSIZE];    /* a list of directories for fonts */
  97. extern int  G_fontpathsize;        /* number of directories on font path */
  98. extern long G_postambleptr;        /* Pointer to the postamble */
  99. extern struct font_entry *G_prevfont;    /* previous font_entry ptr */
  100. extern struct font_entry *G_fontptr;    /* current font_entry ptr */
  101. extern struct font_entry *G_hfontptr;    /* head of font_entry list */
  102. extern struct font_entry *G_pfontptr;    /* previous font_entry ptr */
  103. extern struct open_font_list G_font_files[MAXOPEN];    /* list of open files */
  104.  
  105. /*---------------------------------------------------------------------*/
  106.  
  107.